package com.jdd.modules.parkcar.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jdd.modules.parkcar.entity.ParkCarMonthly;
import com.jdd.modules.parkmonthly.dto.MonthlyCardInfoDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description: 月租车信息
 * @Author: jdd
 * @Date: 2021-05-24
 * @Version: V1.0
 */
public interface ParkCarMonthlyMapper extends BaseMapper<ParkCarMonthly> {

    IPage<MonthlyCardInfoDTO> monthlyCarInfoList(Page<MonthlyCardInfoDTO> page, @Param(Constants.WRAPPER) QueryWrapper<MonthlyCardInfoDTO> queryWrapper);

    List<MonthlyCardInfoDTO> monthlyCarInfo(List<MonthlyCardInfoDTO> list,@Param(Constants.WRAPPER) QueryWrapper<MonthlyCardInfoDTO> queryWrapper);

    List<String> monthlyCarInfoIds(@Param(Constants.WRAPPER) QueryWrapper<ParkCarMonthly> queryWrapper);

    /**
     * 根据车牌 车位编号 状态查询月租车
     *
     * @param plateNo 车牌
     * @param parkCode 车位编号
     * @param status 状态
     * @author jdd孙庆伟
     * @date 2021/5/25 17:44:38
     * @version 1.0
     */
    ParkCarMonthly getLeisureParkNumber(@Param("plateNo") String plateNo, @Param("parkCode") String parkCode, @Param("status") String status);

    /**
     * 根据车牌号 启动状态 查询月租车
     *
     * @param plateNo     车牌号
     * @param status      启动状态
     * @author jdd孙庆伟
     * @date 2021/5/25 14:09:49
     * @version 1.0
     */
   ParkCarMonthly getEntranceMonthly(@Param("plateNo") String plateNo, @Param("status") String status);


   /**
    * 根据车牌号，启用状态，查询入场月租车所有的信息
    * @param plateNo  车牌号
    * @param status 启用状态
    * @return 月租车信息列表
    * @author liuyaowen
    * @date 2021/06-01
    * */
   List<ParkCarMonthly> getEntranceMonthlyInfo(@Param("areaId") String areaId,@Param("plateNo") String plateNo, @Param("status") String status);

   /**
    * 根据车牌 车位编号 状态查询月租车
    *
    * @param plateNo 车牌
    * @author jdd孙庆伟
    * @date 2021/5/25 17:44:38
    * @version 1.0
    */
   ParkCarMonthly getLeisureParkNumber(@Param("plateNo") String plateNo, @Param("status") String status);

    void removeAllInfo();

    /**
     * 根据车牌 车位编号 状态查询月租车
     *
     * @param plateNo 车牌
     * @param parkCode 车位编号
     * @param status 状态
     * @author jdd孙庆伟
     * @date 2021/5/25 17:44:38
     * @version 1.0
     */
    List<ParkCarMonthly> getByPlateNoParkCarMonthlyList(@Param("plateNo") String plateNo, @Param("parkCode") String parkCode, @Param("status") String status);

    /**
     * 获取月卡绑定的车牌号
     * @param monthlyCardId 月卡id
     * @return List<String>
     * */
    List<String> getPlateNoByMonthlyCardId(@Param("monthlyCardId") String monthlyCardId);
}
